package fr.generali.accueilclient.gwt.client.ui.components.menu.tab;

import java.util.Iterator;

import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;

import fr.generali.accueilclient.gwt.client.ui.components.menu.Resources;

/**
 * Correspond à un groupe d'items dans le menu.<br>
 * Un groupe d'items est consitué d'un titre et d'une liste de {@link TabMenuItem}.<br>
 */
public class TabMenuGroup extends Composite implements HasWidgets {

    private static HeaderTabMenuGroupUiBinder uiBinder = GWT.create(HeaderTabMenuGroupUiBinder.class);

    interface HeaderTabMenuGroupUiBinder extends UiBinder<Widget, TabMenuGroup> {
    }

    @UiField
    Resources res;
    
    @UiField
    HTML groupTitle;
    
    @UiField
    FlowPanel itemsContainer;
    
    public TabMenuGroup() {
        initWidget(uiBinder.createAndBindUi(this));
        res.style().ensureInjected();
    }

    public void setTitle(String title) {
        groupTitle.setHTML(title);
    }

    @Override
    public void add(Widget w) {
        itemsContainer.add(w);
    }

    @Override
    public void clear() {
        itemsContainer.clear();
        
    }

    @Override
    public Iterator<Widget> iterator() {
        return itemsContainer.iterator();
    }

    @Override
    public boolean remove(Widget w) {
        return itemsContainer.remove(w);
    }
}
